home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Business Master (3rd Edition)
/
The Business Master (3rd Edition).iso
/
files
/
utilstem
/
mathcopr
/
387germ.doc
< prev
next >
Wrap
Text File
|
1990-04-29
|
22KB
|
438 lines
╔════════════════════════════════╗
║ ║
║ FRANKE.387 ║
║ ║
║ Koprozessor-Emulation für ║
║ 387DX und 387SX ║
║ ║
║ Version 2.4 ║
║ ║
║ (c) Copyright 1989, 1990 by ║
║ Ingenieurbüro FRANKE, ║
║ All rights reserved. ║
║ ║
╚════════════════════════════════╝
Überblick
═════════
FRANKE.387 ist eine Software-Emulation der mathematischen Koprozessoren
387DX und 387SX von Intel. FRANKE.387 wurde für ATs mit 386DX oder 386SX
Prozessor entwickelt. Als Betriebssystem wird MS-DOS, oder ein dazu
kompatibles, vorausgesetzt.
Durch FRANKE.387 wird der gesamte Befehlsumfang der 387-Koprozessoren
abgedeckt. Neben sämtlichen Befehlen stehen auch sämtliche 16 und 32
Bit Adressierungs-Modi zur Verfügung. Dadurch besteht für Anwendungs-
Programme kein Unterschied zum echten Koprozessor.
Natürlich kann FRANKE.387 nicht die physikalische Rechenleistung erhöhen.
FRANKE.387 arbeitet zwar langsamer als ein Koprozessor, macht aber davon
unabhängig. Viele Standard-Programme, die einen Koprozessor automatisch
erkennen, arbeiten mit FRANKE.387 bis Faktor 2,25 schneller.
Shareware
═════════
Mit der Version 2.4 wurde FRANKE.387 auch als Shareware-Version in Umlauf
gebracht. Auf einige Leistungs-Merkmale wurde bei dieser Shareware-Version
verzichtet.
Die nicht registrierte Shareware-Version darf beliebig kopiert und unent-
geltlich weitergegeben werden. Jeder hat das Recht, diese nicht registrierte
Version bis zu 30 Tage kostenlos zu testen.
Alle weiteren Rechte, wie z.B. Verkauf, Änderung, Weitergabe einer
registrierten Version oder auch Nutzung der nicht registrierten Version
länger als 30 Tage, sind ausdrücklich untersagt. Ausnahmen hiervon
bedürfen einer vorherigen, schriftlichen Genehmigung durch das Ingenieur-
büro Franke.
Registrieren
════════════
FRANKE.387 darf nur von registrierten Anwendern länger als 30 Tage
genutzt werden. Die registrierten Versionen benötigen keinen Benutzer-
Eingriff beim Boot-Vorgang.
┌───────────────────────────────────────────────────────┬──────────────┐
│ Version │ Preis zzgl. │
│ │ Kosten │
├───────────────────────────────────────────────────────┼──────────────┤
│ Shareware-Version, nur eine Genauigkeits-Stufe │ DM 60,00 │
│ │ │
│ Komplett-Version, 3 Genauigkeits-Stufen, High Level │ │
│ Language Interface, 387 Instruction Trace Modus │ DM 95,00 │
│ │ │
│ Upgrade von Shareware-Version auf Komplett-Version │ DM 40,00 │
└───────────────────────────────────────────────────────┴──────────────┘
Zum Registrieren werden folgende Angaben benötigt:
1. Name
2. genaue Anschrift
3. gewünschte Version (Shareware/Komplett/Upgrade)
diese Angaben senden Sie an:
┌─────────────────────────────────────────────────────────────┐
│ Brief/Fax: Überweisung: │
│ │
│ Ingenieurbüro FRANKE Ingenieurbüro FRANKE │
│ Rennweg 61 Konto 10039999 │
│ D-8500 Nürnberg 20 Schmidt Bank, Nürnberg │
│ Fax: 49 911 535421 BLZ 760 300 70 │
└─────────────────────────────────────────────────────────────┘
Die Lieferung erfolgt gegen Nachnahme zzgl. Kosten, bzw. ohne zusätzliche
Kosten bei Überweisung.
Installation
════════════
Die Installation ist sehr einfach:
1. Die Dateien FRANKE.387 und 387.EXE auf die Festplatte bzw. Boot-Diskette
kopieren.
2. Die Datei CONFIG.SYS erstellen, falls noch nicht geschehen.
3. Folgende Zeile in CONFIG.SYS eintragen:
DEVICE = FRANKE.387
Ggf. kann dem Namen FRANKE.387 eine Pfad-Angabe vorangestellt werden,
also z.B. DEVICE = c:\tools\FRANKE.387
Hinter dem Namen FRANKE.387 kann der Schalter ON oder OFF stehen.
Also z.B. DEVICE = FRANKE.387 ON. Dieser Schalter gibt an, ob FRANKE.387
anfangs ein- oder ausgeschaltet sein soll. Fehlt dieser Schaltet, so
wird FRANKE.387 automatisch eingeschaltet, wenn kein Koprozessor gefunden
wurde, und automatisch ausgeschaltet, wenn bereits ein Koprozessor
installiert ist.
4. Rechner neu booten.
Durch den Eintrag in CONFIG.SYS wird FRANKE.387 bei jedem Boot-Vorgang
geladen. FRANKE.387 meldet sich mit einer Copyright-Meldung und teilt
seinen aktuellen Zustand mit.
┌────────────────────────────────────────────────────────────────────┐
│ Die nicht registrierte Shareware-Version enthält eine erweiterte │
│ Copyright-Meldung, außerdem ertönt ein akustisches Signal. Der │
│ Boot-Vorgang wird dann solange unterbrochen, bis Sie die richtige │
│ Taste gedrückt haben. Diese Taste erscheint in der letzten Zeile │
│ der Meldung. - Es müssen Großbuchstaben eingegeben werden! │
└────────────────────────────────────────────────────────────────────┘
Bedienen von FRANKE.387
═══════════════════════
FRANKE.387 benötigt normalerweise keinerlei Bedienung durch den Anwender.
Sämtliche Aktionen werden durch die Anwendungs-Programme eingeleitet, wenn
sie den Koprozessor ansprechen. FRANKE.387 arbeitet also vollautomatisch.
Für die Anwendungs-Programme besteht kein Unterschied zum echten Koprozessor.
Natürtlich arbeitet FRANKE.387 nur im eingeschalteten Zustand. Wie bei der
Installation erklärt, kann dieser Zustand durch die Schalter ON bzw. OFF
fest eingestellt werden. Normalerweise ist FRANKE.387 immer dann einge-
schaltet, wenn kein Koprozessor vorhanden ist.
Zum nachträglichen Ein- bzw. Ausschalten von FRANKE.387 wird das Programm
387.EXE mitgeliefert. Dieses Programm kann in irgendein Verzeichnis der
Festplatte oder auch auf eine Diskette kopiert und von dort aus gestartet
werden.
Folgende Aufruf-Arten von 387.EXE sind möglich. Einige dieser Funktionen
werden nur durch die Komplett-Version unterstützt.
┌─────────────────┬───────────────────────────────────────────────────────┐
│ Aufruf │ Funktion │
├─────────────────┼───────────────────────────────────────────────────────┤
│ 387 │ FRANKE.387 wird in den Standard-Zustand gesetzt. │
│ │ D.h. FRANKE.387 wird eingeschaltet, wenn kein │
│ │ Koprozessor installiert ist, bzw. ausgeschaltet, │
│ │ wenn ein Koprozessor gefunden wurde. │
├─────────────────┼───────────────────────────────────────────────────────┤
│ 387 ON │ FRANKE.387 wird mit voller Genauigkeit eingeschaltet. │
├─────────────────┼───────────────────────────────────────────────────────┤
│ 387 OFF │ FRANKE.387 wird ausgeschaltet. Das kann z.B. notwendig│
│ │ werden, wenn bei eingeschaltetem FRANKE.387 kein │
│ │ Warm-Start (Strg+Alt+Entf) möglich ist. Der Tastatur- │
│ │ Treiber KEYBOARD.386 erledigt das selbständig. │
╞═════════════════╧═══════════════════════════════════════════════════════╡
│ Die Folgenden Funktionen werden nur in der Komplett-Version unterstützt.│
╞═════════════════╤═══════════════════════════════════════════════════════╡
│ 387 53 │ FRANKE.387 wird mit maximal 53 Bit Genauigkeit │
│ │ eingeschaltet. Das entspricht den Daten-Typen double, │
│ │ long real oder doppelter Genauigkeit. Das ist für fast│
│ │ alle Anwendungen die höchste unterstützte Genauigkeit │
│ │ und in diesen Fällen ausreichend. FRANKE.387 arbeitet │
│ │ dadurch deutlich schneller. │
├─────────────────┼───────────────────────────────────────────────────────┤
│ 387 24 │ FRANKE.387 wird mit maximal 24 Bit Genauigkeit │
│ │ eingeschaltet. Das entspricht den Daten-Typen float, │
│ │ real oder einfacher Genauigkeit. Das ist in vielen │
│ │ Fällen die tatsächlich benötigte Genauigkeit. │
│ │ FRANKE.387 arbeitet dadurch deutlich schneller. │
├─────────────────┼───────────────────────────────────────────────────────┤
│ 387 ON I │ Wie 387 ON, zusätzlich wird das High Level Language │
│ │ Interface aktiviert. (Siehe High Level Language │
│ │ Interface.) │
├─────────────────┼───────────────────────────────────────────────────────┤
│ 387 53 I │ Wie 387 53, zusätzlich wird das High Level Language │
│ │ Interface aktiviert. Das ist die empfohlene Standard- │
│ │ Einstellung für die Komplett-Version. (Siehe High │
│ │ Level Language Interface.) │
├─────────────────┼───────────────────────────────────────────────────────┤
│ 387 24 I │ Wie 387 24, zusätzlich wird das High Level Language │
│ │ Interface aktiviert. In dieser Einstellung erreicht │
│ │ FRANKE.387 die höchste Rechenleistung. (Siehe High │
│ │ Level Language Interface.) │
└─────────────────┴───────────────────────────────────────────────────────┘
Rechengeschwindigkeit
═════════════════════
Wie jeder 387-Koprozessor kann auch FRANKE.387 in den drei Genauigkeits-
stufen mit 64, 53 bzw. 24 Bit rechnen. In der Komplett-Version kann der
Anwender die maximale Genauigkeit festlegen, um höhere Rechenleistung zu
erzielen.
Die folgende Tabelle gibt für einige Befehle die ungefähren Taktzyklen an.
Die Angaben gelten für 386DX-Prozessoren ohne Wait States, bei 386SX oder
Wait States sind alle Werte geringfügig höher anzusetzen.
Unter EMUL87 sind die Zeiten für den Public Domain 80287-Emulator angegeben.
┌──────────╥──────────────────╥───────╥──────────────────────────╥────────┐
│ ║ ║ ║ FRANKE.387 ║ │
│ Funktion ║ Beschreibung ║ 387DX ║ 64 Bit │ 53 Bit │ 24 Bit ║ EMUL87 │
╞══════════╬══════════════════╬═══════╬════════╪════════╪════════╬════════╡
│ FNOP ║ keine Operation ║ 25 ║ 410 │ 410 │ 410 ║ 1.075 │
│ FLD ║ TByte-Zahl laden ║ 38 ║ 650 │ 650 │ 650 ║ 1.470 │
│ FSTP ║ TByte speichern ║ 55 ║ 745 │ 745 │ 745 ║ 1.495 │
├──────────╫──────────────────╫───────╫────────┼────────┼────────╫────────┤
│ FADD ║ Addition ║ 34 ║ 700 │ 700 │ 680 ║ 1.460 │
│ FSUB ║ Subtraktion ║ 34 ║ 770 │ 770 │ 750 ║ 1.565 │
│ FMUL ║ Multiplikation ║ 52 ║ 830 │ 800 │ 700 ║ 1.985 │
│ FDIV ║ Division ║ 96 ║ 840 │ 840 │ 710 ║ 2.340 │
├──────────╫──────────────────╫───────╫────────┼────────┼────────╫────────┤
│ FSQRT ║ Quadratwurzel ║ 126 ║ 1.295 │ 1.060 │ 805 ║ 3.135 │
│ FSIN ║ Sinus ║ 490 ║ 3.960 │ 3.770 │ 1.960 ║ --- │
│ FCOS ║ Cosinus ║ 547 ║ 4.100 │ 3.910 │ 2.070 ║ --- │
│ FPTAN ║ Tangens ║ 342 ║ 5.845 │ 5.400 │ 2.995 ║ 13.530 │
│ FPATAN ║ Arcustangens ║ 448 ║ 8.895 │ 7.965 │ 3.750 ║ 13.875 │
│ FYL2X ║ Logarithmus ║ 492 ║ 8.690 │ 7.610 │ 3.410 ║ 12.885 │
│ F2XM1 ║ Potenzfunktion ║ 317 ║ 4.385 │ 3.975 │ 2.140 ║ 11.640 │
└──────────╨──────────────────╨───────╨────────┴────────┴────────╨────────┘
High Level Language Interface
═════════════════════════════
Das High Level Language Interface (HLLI) steht nur in der Komplett-Version
zur Verfügung. Das HLLI nutzt die spezielle Kodierung der Koprozessor-
Befehle, wie sie durch etliche Hochsprachen-Compiler z.B. von Microsoft
oder Borland erzeugt werden.
Durch das HLLI kann FRANKE.387 alle Anweisungen deutlich schneller aus-
führen als ohne HLLI. In der Regel stört das HLLI keine Anwendungen. Bei
Problemen sollte es abgeschaltet werden. Es wird empfohlen, FRANKE.387 auf
maximal 53 Bit Genauigkeit mit High Level Language Interface einzustellen.
Durch diese Einstellung entstehen gewöhnlich keine Nachteile bei sehr
hoher Rechenleistung.
Die folgende Tabelle zeigt den Nutzen des HLLI anhand eines Testprogramms.
Das Testprogramm führt jede Anweisung 100.000 mal mit gleichmäßig verteilten
Zufallszahlen aus. Es wurde in C geschrieben, und mit Microsoft C
(Firma Microsoft) bzw. Turbo C (Firma Borland) übersetzt.
Als Testrechner diente ein 386DX, 25MHz. Alle Zeitangabe sind in Sekunden.
╔══════════════════════════════════════════════════════════════════╗
║ Testprogramm mit Microsoft C übersetzt: ║
╟──────────╥───────╥───────────╥─────────────────╥─────────────────╢
║ C- ║ ║ Microsoft ║ FRANKE.387 ║ FRANKE.387+HLLI ║
║ Funktion ║ 387DX ║ Emulation ║ 64 Bit │ 53 Bit ║ 64 Bit │ 53 Bit ║
╠══════════╬═══════╬═══════════╬════════╪════════╬════════╪════════╣
║ x := y ║ 0,27 ║ 0,27 ║ 0,27 │ 0,27 ║ 0,27 │ 0,27 ║
║ x < y ║ 0,71 ║ 8,63 ║ 9,56 │ 9,51 ║ 8,35 │ 8,35 ║
╟──────────╫───────╫───────────╫────────┼────────╫────────┼────────╢
║ x + y ║ 0,66 ║ 8,63 ║ 9,07 │ 9,07 ║ 8,30 │ 8,24 ║
║ x * y ║ 0,71 ║ 10,49 ║ 9,67 │ 9,62 ║ 8,85 │ 8,79 ║
║ x / y ║ 0,93 ║ 12,47 ║ 9,73 │ 9,73 ║ 8,90 │ 8,90 ║
╟──────────╫───────╫───────────╫────────┼────────╫────────┼────────╢
║ sqrt(x) ║ 2,75 ║ 27,58 ║ 29,56 │ 28,74 ║ 26,32 │ 25,44 ║
║ sin(x) ║ 7,14 ║ 129,67 ║ 92,86 │ 90,11 ║ 84,62 │ 82,42 ║
║ cos(x) ║ 7,14 ║ 131,32 ║ 94,51 │ 91,21 ║ 86,26 │ 82,97 ║
║ tan(x) ║ 6,04 ║ 103,30 ║ 76,92 │ 75,82 ║ 70,88 │ 69,23 ║
║ atan(x) ║ 4,95 ║ 107,69 ║ 52,20 │ 52,20 ║ 47,25 │ 46,70 ║
║ exp(x) ║ 7,14 ║ 130,77 ║ 94,00 │ 92,31 ║ 83,52 │ 81,87 ║
║ log(x) ║ 4,95 ║ 103,30 ║ 70,33 │ 65,38 ║ 65,38 │ 60,99 ║
║ pow(x,y) ║ 9,89 ║ 217,58 ║ 143,41 │ 137,36 ║ 131,32 │ 125,27 ║
╚══════════╩═══════╩═══════════╩════════╧════════╩════════╧════════╝
╔══════════════════════════════════════════════════════════════════╗
║ Testprogramm mit Borland Turbo C übersetzt: ║
╟──────────╥───────╥───────────╥─────────────────╥─────────────────╢
║ C- ║ ║ Borland ║ FRANKE.387 ║ FRANKE.387+HLLI ║
║ Funktion ║ 387DX ║ Emulation ║ 64 Bit │ 53 Bit ║ 64 Bit │ 53 Bit ║
╠══════════╬═══════╬═══════════╬════════╪════════╬════════╪════════╣
║ x := y ║ 0,57 ║ 4,47 ║ 5,74 │ 5,74 ║ 5,13 │ 5,13 ║
║ x < y ║ 0,68 ║ 6,89 ║ 8,21 │ 8,21 ║ 7,32 │ 7,32 ║
╟──────────╫───────╫───────────╫────────┼────────╫────────┼────────╢
║ x + y ║ 0,79 ║ 8,59 ║ 9,31 │ 9,31 ║ 8,48 │ 8,48 ║
║ x * y ║ 0,90 ║ 10,74 ║ 9,91 │ 9,80 ║ 9,08 │ 8,98 ║
║ x / y ║ 1,01 ║ 11,95 ║ 9,91 │ 9,91 ║ 9,14 │ 9,09 ║
╟──────────╫───────╫───────────╫────────┼────────╫────────┼────────╢
║ sqrt(x) ║ 1,67 ║ 19,25 ║ 17,05 │ 16,18 ║ 15,62 │ 14,69 ║
║ sin(x) ║ 3,21 ║ 38,92 ║ 29,58 │ 28,48 ║ 28,48 │ 27,93 ║
║ cos(x) ║ 3,76 ║ 38,92 ║ 30,64 │ 29,03 ║ 29,03 │ 28,48 ║
║ tan(x) ║ 3,76 ║ 68,04 ║ 39,47 │ 37,82 ║ 37,82 │ 35,63 ║
║ atan(x) ║ 4,86 ║ 44,97 ║ 47,16 │ 46,62 ║ 26,83 │ 26,29 ║
║ exp(x) ║ 8,70 ║ 68,64 ║ 102,66 │ 101,56 ║ 36,17 │ 34,53 ║
║ log(x) ║ 4,86 ║ 60,90 ║ 61,45 │ 57,05 ║ 51,01 │ 46,62 ║
║ pow(x,y) ║ 15,05 ║ 149,67 ║ 190,88 │ 184,84 ║ 107,31 │ 101,32 ║
╚══════════╩═══════╩═══════════╩════════╧════════╩════════╧════════╝
Benchmark-Tests
═══════════════
FRANKE.387 wurde mit ein paar bekannten Benchmark-Programmen getestet.
Die Tabelle enthält die entsprechenden Ergebnisse, die auf einem 386DX
mit 25MHz erziehlt wurden:
┌───────────┬─────╥───────╥──────╥────────────────────╥────────────────────┐
│ │ ║ ║ ohne ║ FRANKE.387 ║ FRANKE.387 + HLLI │
│ Benchmark │ Maß ║ 387DX ║ Kopr.║ 64 B.│ 53 B.│ 24 B.║ 64 B.│ 53 B.│ 24 B.│
├───────────┼─────╫───────╫──────╫──────┼──────┼──────╫──────┼──────┼──────┤
│ ATPERF │ MHz ║ 52,5 ║ ---- ║ 6,8 │ 6,8 │ 7,5 ║ 6,8 │ 6,8 │ 7,5 │
│ 87TEST │ MHz ║ 26,91 ║ ---- ║ 1,881│ 1,937│ 2,8 ║ 1,881│ 1,937│ 2,8 │
│ BENCH 5.0 │ s ║ 0,33 ║ ---- ║ 3,66 │ 3,45 │ 2,94 ║ 2,44 │ 2,30 │ 1,78 │
│ TEST41V │ s ║ 0,50 ║ 2,06 ║ 1,55 │ 1,50 │ 1,22 ║ 1,44 │ 1,39 │ 1,17 │
└───────────┴─────╨───────╨──────╨──────┴──────┴──────╨──────┴──────┴──────┘
Die verwendeten Benchmark-Programme:
ATPERF: ATPERF -- PC Tech Journal AT Hardware Performance Test
Version 2.00, Copyright (c) 1986, 1987 Ziff Communications Co.
87TEST: 87TEST Version 2.01
Copyright (C) MicroWay, Inc. 1985-1989
BENCH 5.0: PC Magazine Labs Benchmark Series 5.0
TEST41V: SpeedTest Version 4.1, Copyright 1990 by Duane A. Allred
387 Instruction Trace Modus
═══════════════════════════
Der 387 Instruction Trace Modus ist nur mit der Komplett-Version verfüg-
bar. Er eröffnet völlig neue Methoden zum Debuggen. Durch den 387 Instruction
Trace Modus wird jeder ausgeführte Koprozessor-Befehl in folgendem Format
am Bildschirm angezeigt:
CS:IP Code Befehl Operand Adresse Inhalt
also z.B.:
2AE1:4FD3 D9EC LDLG2
2AE1:4FD6 DEC9 MULP ST(1),ST
2AE1:4FD9 DF5E ISTP Word 30ED:03C4 = 0000
2AE1:4FE6 DB6E LD TByte 30ED:03BA = 3FFF8000000000000000
Die Anzeige am Bildschirm erfolgt - natürlich nur bei eingeschaltetem
387 Instruction Trace Modus - solange Scroll Lock eingeschaltet ist.
Bei ausgeschaltetem Scroll Lock erfolgt keine Anzeige am Bildschrim,
auch wenn der 387 Instruction Trace Modus eingeschaltet ist.
Mithilfe der linken Shift-Taste und der Strg-Taste (bzw. Ctrl-Taste)
können die Koprozessor-Befehle auch im Einzelschritt ausgeführt werden.
Dazu müssen der 387 Instruction Trace Modus und Scroll Lock einge-
schaltet sein. Wenn die linke Shift-Taste gedrückt ist, wartet der
387 Instruction Trace Modus nach dem Anzeigen eines Koprozessor-Befehls
so lange, bis eine Strg-Taste (Ctrl-Taste) gedrückt wird. Solange also
die linke Shift-Taste gedrückt bleibt, kann mit der Strg-Taste jeder
Koprozessor-Befehl einzeln gesteppt werden.
Der 387 Instruction Trace Modus stellt eine nützliche Alternative zu
den herkömmlichen Debuggern dar. Zum einen ist der 387 Instruction Trace
Modus für Anwendungs-Programme völlig transparent, zum anderen werden
ausschließlich Koprozessor-Befehle angezeigt. Dadurch können umfangreiche
mathematische Anwendungen problemlos getestet werden.
┌──────────────────────────────────────────────────────────────────────────┐
│ Für den 387 Instruction Trace Modus wird das Programm 387TRACE.EXE │
│ benötigt, das der Komplett-Version beiliegt. Dieses Programm installiert │
│ sich beim ersten Aufruf resident und benötigt ca. 2800 Bytes. 387TRACE │
│ schaltet bei jedem Aufruf zyklisch den 387 Instruction Trace Modus ein │
│ bzw. aus. │
└──────────────────────────────────────────────────────────────────────────┘
Kompatibilität
══════════════
FRANKE.387 ist ein hochwertiges Software-Produkt, das mit effizienten
Algorithmen die Möglichkeiten der 32 Bit 386-Prozessoren ausschöpft.
Bis auf wenige Ausnahmen verhält sich FRANKE.387 total identisch zum
387-Koprozessor. In diesem Abschnitt sind diese wenigen Ausnahmen
aufgeführt:
1. Rechengenauigkeit
────────────────────
Der 387-Koprozessor rechnet intern stets mit 67 Bit Genauigkeit. Nur
beim Runden werden die Zahlen der gewünschten Genauigkeit entsprechend
angepaßt. FRANKE.387 rechnet dagegen intern nur mit 64 Bit. Dadurch
können geringe Rundungsfehler bei 64 Bit Genauigkeit auftreten, die in
der Praxis allerdings keine Bedeutung haben. Die Genauigkeiten
von 24 bzw. 53 Bit werden durch FRANKE.387 stets übertroffen.
2. Runden
─────────
FRANKE.387 rundet nur durch den Befehl FRNDINT bzw. beim Speichern von
Koprozessor-Registern, während der 387-Koprozessor nach jeder Berechnung
rundet. Dadurch wird die Rechenleistung von FRANKE.387 verbessert.
Nachteile dadurch konnten bis jetzt nicht festgestellt werden.
3. F2XM1, FYL2XP1
─────────────────
Beim 387-Koprozessor sind lediglich die Befehle F2XM1 und FYL2XP1 im
Argument beschränkt. Diese Beschränkung trifft auf FRANKE.387 nicht zu,
sodaß hier alle Befehle mit allen mathematisch zulässigen Argumenten
möglich sind.
4. F2X
──────
FRANKE.387 kennt zusätzlich den Befehl F2X (Kodierung D9 EF). Dieser Befehl
entspricht den Befehlen F2XM1, FLD1, FADDP allerdings ohne Verlust an
Genauigkeit.
5. FPTAN
─────────
Im Gegensatz zum 387-Koprozessor errechnet FRANKE.387 für den Tangens von
π/2 etwas genauer den Wert "unendlich".
6. Exceptions
─────────────
Da FRANKE.387 eine Software-Emulation ist, wird bei Exceptions kein
Hardware-Interrupt erzeugt. Bei einer Exception erzeugt FRANKE.387 stets
einen INT 2. Dieser Interrupt kann nicht maskiert werden. Das entspricht
auch den Spezifikationen des 387-Koprozessors.